import Vuex from 'vuex'
import Vue from 'vue'
Vue.use(Vuex)
let store = new Vuex.Store({
  strict: true, // 开启严格模式
  state: {
    // 想要修改这里边的数据  唯一的方法是提交mutation
    count: 100,
    count2: 100,
    count3: 100
  },
  mutations: {
    // 这里存储的都是一些用来修改vuex数据的方法
    // 执行这里边的方法是通过 store.commit(函数名字，传递的参数)
    changeCount(state, payload) {
      // 这些函数最少有一个参数 最多两个
      state.count = payload

    },
    add(state) {
      state.count++
      return 888
    },
    changeCount2(state, payload) {
      // 这些函数最少有一个参数 最多两个
      state.count = payload.qqq
      // setTimeout(() => {
      //   state.count = payload.qqq
      // }, 1000);

    }
  },
  actions: {
    // 编写一些异步函数 然后 再去调用mutations中的函数
    // 执行这里边的方法是通过 store.dispatch(函数名字，传递的参数)
    changeCountAsync(store, payload) {
      // 这些函数最少有一个参数 最多两个
      setTimeout(() => {
        store.commit('add')
      }, 1000);
      return 888888
    }
  },
  getters: {
    // 这里边的属性 相当于vue的计算属性
    type123(state) {
      return state.count % 2 ? '奇数' : '偶数'
    }
  }
})

export default store